/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Daniel,Alejandro,Jairo
 */
import java.util.GregorianCalendar;
import java.util.Iterator;

public class Partido {

    private Equipo local;
    private Equipo visitante;
    private GregorianCalendar horario;
    private String resultado;
    private boolean amistoso;

    //Eliminado resultado
    public Partido(Equipo local, Equipo visitante, GregorianCalendar horario, boolean amistoso) {
        this.local = local;
        this.visitante = visitante;
        this.horario = horario;
        this.amistoso = amistoso;
    }

    public Partido(Equipo local, Equipo visitante) {
        this.local = local;
        this.visitante = visitante;
    }

    public Equipo getLocal() {
        return local;
    }

    public void setLocal(Equipo local) {
        this.local = local;
    }

    public Equipo getVisitante() {
        return visitante;
    }

    public void setVisitante(Equipo visitante) {
        this.visitante = visitante;
    }

    public GregorianCalendar getHorario() {
        return horario;
    }

    public void setHorario(GregorianCalendar horario) {
        this.horario = horario;
    }

    public String getResultado() {
        return resultado;
    }

    public void setResultado(String resultado) {
        this.resultado = resultado;
    }

    public boolean isAmistoso() {
        return amistoso;
    }

    public void setAmistoso(boolean amistoso) {
        this.amistoso = amistoso;
    }

    public Equipo jugar() {
        int gLocales = 1;
        int gVisitantes = 0;

        gLocales += this.valoracionEquipoJC(this.local) - this.valoracionEquipoPO(this.visitante);
        gVisitantes += this.valoracionEquipoJC(this.visitante) - this.valoracionEquipoPO(this.local);

        int extra = (int) (Math.random() * 100) % 2;
        if (extra == 0) {
            gLocales += 1;
        } else {
            gVisitantes += 1;
        }

        if (gLocales > gVisitantes) {
            this.resultado = local.getNombre() + " " + gLocales +"-"+ gVisitantes;
            return local;
        }
        if (gLocales < gVisitantes) {
            this.resultado = visitante.getNombre()+ " " + gVisitantes +"-"+ gLocales;;
            return visitante;
        }
        return null;
    }

    public int valoracionEquipoJC(Equipo e) {
        Jugador aux = null;
        int sumaValoracionesJC = 0;
        Iterator<Jugador> it = e.getPlantilla().iterator();
        {
            while (it.hasNext()) {
                aux = it.next();
                if (aux instanceof JugadorDeCampo) {
                    sumaValoracionesJC += aux.getValoracion();
                }
            }
            return sumaValoracionesJC / 100;

        }
    }

    public int valoracionEquipoPO(Equipo e) {
        Jugador aux2 = null;
        int sumaValoracionesPO = 0;
        Iterator<Jugador> it = e.getPlantilla().iterator();
        {
            while (it.hasNext()) {
                aux2 = it.next();
                if (aux2 instanceof Portero) {
                    sumaValoracionesPO += aux2.getValoracion();
                }
            }
            return sumaValoracionesPO / 10;

        }
    }

    @Override
    public String toString() {
        return local.getNombre()+ " VS " + visitante.getNombre();
    }
    

}
